import base64
import tesserocr
from io import BytesIO
from PIL import Image

def read_img(img):
    img_byte = base64.b64decode(img)
    img_data = BytesIO(img_byte)
    image = Image.open(img_data)
    i = image.convert('L')
    i = image_thresholding_method(i)
    words = tesserocr.image_to_text(i)
    return words

def image_thresholding_method(image):
    """
    图片二值化处理
    :param image:转灰度处理后的图片文件
    :return: 二值化处理后的图片文件
    """
    # 阈值，控制二值化程度，自行调整（不能超过256）
    threshold = 160
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    # 图片二值化，此处第二个参数为数字一
    image = image.point(table, '1')
    return image
